<!DOCTYPE html>
<html lang="zh">

<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
	<meta name="keywords" content="dromara.org" />
	<meta name="description" content="dromara.org" />
	<!-- 网页标签标题 -->
	<title>dromara(Open source organization)</title>
	<link rel="shortcut icon" href="/website/img/docsite.ico"/>
	<link rel="stylesheet" href="/website/build/documentation.css" />
</head>
<body>
	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/website/zh-cn/index.html"><img class="logo" src="/website/img/dromara.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><div class="header-menu"><img class="header-menu-toggle" src="/website/img/system/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a href="/website/zh-cn/index.html" target="_self">首页</a></li><li class="menu-item menu-item-normal menu-item-normal-active"><a href="/website/zh-cn/docs/soul/soul.html" target="_self">文档</a></li><li class="menu-item menu-item-normal"><a href="/website/zh-cn/blog/index.html" target="_self">博客</a></li><li class="menu-item menu-item-normal"><a href="/website/zh-cn/community/index.html" target="_self">社区</a></li></ul></div></div></header><div class="bar"><div class="bar-body"><img src="/website/img/system/docs.png" class="front-img"/><span>文档</span><img src="/website/img/system/docs.png" class="back-img"/></div></div><section class="content-section"><div class="sidemenu"><div class="sidemenu-toggle"><img src="https://img.alicdn.com/tfs/TB1E6apXHGYBuNjy0FoXXciBFXa-200-200.png"/></div><ul><li class="menu-item menu-item-level-1"><span>Soul</span><ul><li style="height:36px;overflow:hidden" class="menu-item menu-item-level-2"><a href="/website/zh-cn/docs/soul/soul.html" target="_self">soul介绍</a></li><li style="height:36px;overflow:hidden" class="menu-item menu-item-level-2"><a href="/website/zh-cn/docs/soul/team.html" target="_self">团队介绍</a></li><li style="height:36px;overflow:hidden" class="menu-item menu-item-level-2"><a href="/website/zh-cn/docs/soul/induction.html" target="_self">soul极简入门</a></li><li style="height:36px;overflow:hidden" class="menu-item menu-item-level-2"><a href="/website/zh-cn/docs/soul/db.html" target="_self">数据库设计</a></li><li style="height:36px;overflow:hidden" class="menu-item menu-item-level-2"><a href="/website/zh-cn/docs/soul/config.html" target="_self">数据配置流程</a></li><li style="height:36px;overflow:hidden" class="menu-item menu-item-level-2"><a href="/website/zh-cn/docs/soul/dataSync.html" target="_self">数据同步原理</a></li><li style="height:36px;overflow:hidden" class="menu-item menu-item-level-2"><a href="/website/zh-cn/docs/soul/metaData.html" target="_self">元数据概念介绍</a></li><li style="height:612px;overflow:hidden" class="menu-item menu-item-level-2"><span>用户使用文档<img style="transform:rotate(0deg)" class="menu-toggle" src="/website/img/system/arrow_down.png"/></span><ul><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/soul/setup.html" target="_self">搭建soul网关环境</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/soul/user-http.html" target="_self">http用户</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/soul/user-dubbo.html" target="_self">dubbo用户</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/soul/user-springcloud.html" target="_self">springCloud用户</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/soul/selector.html" target="_self">选择器规则详解</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/soul/user-dataSync.html" target="_self">数据同步策略</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/soul/plugin-divide.html" target="_self">divide插件</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/soul/plugin-dubbo.html" target="_self">dubbo插件</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/soul/plugin-springcloud.html" target="_self">springcloud插件</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/soul/plugin-rateLimiter.html" target="_self">rateLimiter插件</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/soul/plugin-hystrix.html" target="_self">hystrix插件</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/soul/plugin-monitor.html" target="_self">monitor插件</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/soul/plugin-waf.html" target="_self">waf插件</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/soul/plugin-sign.html" target="_self">sign插件</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/soul/plugin-rewrite.html" target="_self">rewrite插件</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/soul/plugin-websocket.html" target="_self">websocket支持</a></li></ul></li><li style="height:360px;overflow:hidden" class="menu-item menu-item-level-2"><span>开发者文档<img style="transform:rotate(0deg)" class="menu-toggle" src="/website/img/system/arrow_down.png"/></span><ul><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/soul/dev-filter.html" target="_self">自定义filter</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/soul/dev-plugin.html" target="_self">自定义插件</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/soul/dev-file.html" target="_self">文件上传下载</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/soul/dev-iphost.html" target="_self">自定义解析IP与host</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/soul/dev-result.html" target="_self">自定义返回结果</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/soul/dev-sign.html" target="_self">自定义签名插件算法与验证</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/soul/dev-client.html" target="_self">多语言http客户端接入</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/soul/dev-thread.html" target="_self">线程模型</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/soul/dev-netty.html" target="_self">soul调优</a></li></ul></li><li style="height:144px;overflow:hidden" class="menu-item menu-item-level-2"><span>社区贡献<img style="transform:rotate(0deg)" class="menu-toggle" src="/website/img/system/arrow_down.png"/></span><ul><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/soul/contributor.html" target="_self">贡献者指南</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/soul/committer.html" target="_self">提交者指南</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/soul/code-conduct.html" target="_self">编码规范</a></li></ul></li></ul></li><li class="menu-item menu-item-level-1"><span>Hmily</span><ul><li style="height:36px;overflow:hidden" class="menu-item menu-item-level-2"><a href="/website/zh-cn/docs/hmily/index.html" target="_self">介绍文档</a></li><li style="height:36px;overflow:hidden" class="menu-item menu-item-level-2"><a href="/website/zh-cn/docs/hmily/term.html" target="_self">术语</a></li><li style="height:36px;overflow:hidden" class="menu-item menu-item-level-2"><a href="/website/zh-cn/docs/hmily/team.html" target="_self">团队介绍</a></li><li style="height:36px;overflow:hidden" class="menu-item menu-item-level-2"><a href="/website/zh-cn/docs/hmily/faq.html" target="_self">FAQ</a></li><li style="height:288px;overflow:hidden" class="menu-item menu-item-level-2"><span>配置模块<img style="transform:rotate(0deg)" class="menu-toggle" src="/website/img/system/arrow_down.png"/></span><ul><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/hmily/config.html" target="_self">配置详解</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/hmily/config-local.html" target="_self">本地模式</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/hmily/config-zookeeper.html" target="_self">Zookeeper配置中心</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/hmily/config-nacos.html" target="_self">Nacos配置中心</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/hmily/config-apollo.html" target="_self">Apollo配置中心</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/hmily/config-etcd.html" target="_self">Etcd配置中心</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/hmily/config-consul.html" target="_self">Consul配置中心</a></li></ul></li><li style="height:36px;overflow:hidden" class="menu-item menu-item-level-2"><a href="/website/zh-cn/docs/hmily/annotation.html" target="_self">注解详解</a></li><li style="height:36px;overflow:hidden" class="menu-item menu-item-level-2"><a href="/website/zh-cn/docs/hmily/context.html" target="_self">事务上下文</a></li><li style="height:36px;overflow:hidden" class="menu-item menu-item-level-2"><a href="/website/zh-cn/docs/hmily/metrics.html" target="_self">metrics信息</a></li><li style="height:36px;overflow:hidden" class="menu-item menu-item-level-2"><a href="/website/zh-cn/docs/hmily/tcc.html" target="_self">TCC模式</a></li><li style="height:36px;overflow:hidden" class="menu-item menu-item-level-2"><a href="/website/zh-cn/docs/hmily/tac.html" target="_self">TAC模式</a></li><li style="height:252px;overflow:hidden" class="menu-item menu-item-level-2"><span>用户文档<img style="transform:rotate(0deg)" class="menu-toggle" src="/website/img/system/arrow_down.png"/></span><ul><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/hmily/user-dubbo.html" target="_self">dubbo用户</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/hmily/user-motan.html" target="_self">motan用户</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/hmily/user-springcloud.html" target="_self">springcloud用户</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/hmily/user-sofa-rpc.html" target="_self">sofa-rpc用户</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/hmily/user-tars.html" target="_self">tars用户</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/hmily/user-grpc.html" target="_self">Grpc用户</a></li></ul></li><li style="height:252px;overflow:hidden" class="menu-item menu-item-level-2"><span>快速体验<img style="transform:rotate(0deg)" class="menu-toggle" src="/website/img/system/arrow_down.png"/></span><ul><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/hmily/quick-start-dubbo.html" target="_self">dubbo快速体验</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/hmily/quick-start-springcloud.html" target="_self">springcloud快速体验</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/hmily/quick-start-motan.html" target="_self">motan快速体验</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/hmily/quick-start-sofa-rpc.html" target="_self">sofa-rpc快速体验</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/hmily/quick-start-tars.html" target="_self">tars快速体验</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/hmily/quick-start-grpc.html" target="_self">grpc快速体验</a></li></ul></li><li style="height:72px;overflow:hidden" class="menu-item menu-item-level-2"><span>运维平台<img style="transform:rotate(0deg)" class="menu-toggle" src="/website/img/system/arrow_down.png"/></span><ul><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/hmily/admin.html" target="_self">启动admin</a></li></ul></li><li style="height:144px;overflow:hidden" class="menu-item menu-item-level-2"><span>社区贡献<img style="transform:rotate(0deg)" class="menu-toggle" src="/website/img/system/arrow_down.png"/></span><ul><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/hmily/contributor.html" target="_self">贡献者指南</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/hmily/committer.html" target="_self">提交者指南</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/hmily/code-conduct.html" target="_self">编码规范</a></li></ul></li></ul></li><li class="menu-item menu-item-level-1"><span>raincat</span><ul><li style="height:36px;overflow:hidden" class="menu-item menu-item-level-2"><a href="/website/zh-cn/docs/raincat/index.html" target="_self">介绍文档</a></li><li style="height:36px;overflow:hidden" class="menu-item menu-item-level-2"><a href="/website/zh-cn/docs/raincat/start-manager.html" target="_self">启动raincat-manager</a></li><li style="height:36px;overflow:hidden" class="menu-item menu-item-level-2"><a href="/website/zh-cn/docs/raincat/config.html" target="_self">配置详解</a></li><li style="height:36px;overflow:hidden" class="menu-item menu-item-level-2"><a href="/website/zh-cn/docs/raincat/admin.html" target="_self">启动admin</a></li><li style="height:144px;overflow:hidden" class="menu-item menu-item-level-2"><span>用户文档<img style="transform:rotate(0deg)" class="menu-toggle" src="/website/img/system/arrow_down.png"/></span><ul><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/raincat/user-dubbo.html" target="_self">dubbo用户</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/raincat/user-motan.html" target="_self">motan用户</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/raincat/user-springcloud.html" target="_self">springcloud用户</a></li></ul></li><li style="height:108px;overflow:hidden" class="menu-item menu-item-level-2"><span>快速体验<img style="transform:rotate(0deg)" class="menu-toggle" src="/website/img/system/arrow_down.png"/></span><ul><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/raincat/quick-start-dubbo.html" target="_self">quick-start-dubbo</a></li><li class="menu-item menu-item-level-3"><a href="/website/zh-cn/docs/raincat/quick-start-springcloud.html" target="_self">quick-start-springcloud</a></li></ul></li></ul></li><li class="menu-item menu-item-level-1"><span>myth</span><ul><li style="height:36px;overflow:hidden" class="menu-item menu-item-level-2"><a href="/website/zh-cn/docs/myth/index.html" target="_self">介绍文档</a></li></ul></li></ul></div><div class="doc-content markdown-body"><h2>说明</h2>
<ul>
<li>
<p>选择器和规则是soul网关中最灵魂的东西。掌握好它，你可以对任何流量进行管理。</p>
</li>
<li>
<p>本篇主要详解soul网关中，选择器与规则的概念，以及如何使用。</p>
</li>
</ul>
<h2>大体理解</h2>
<ul>
<li>
<p>一个插件有多个选择器，一个选择器对应多种规则。选择器相当于是对流量的第一次筛选，规则就是最终的筛选。</p>
</li>
<li>
<p>我们想象一下，在一个插件里面，我们是不是希望根据我们的配置，达到满足条件的流量，我们插件才去执行它？</p>
</li>
<li>
<p>选择器和规则就是为了让流量在满足特定的条件下，才去执行我们想要的，这个你首先头脑要点数。</p>
</li>
<li>
<p>数据结构可以参考之前的 <a href="db.md">数据库设计</a></p>
</li>
</ul>
<h2>选择器</h2>
<p><img src="https://yu199195.github.io/images/soul/selector.png" alt=""></p>
<ul>
<li>
<p>选择器详解：</p>
<ul>
<li>名称：为你的选择器起一个容易分辨的名字</li>
<li>类型：custom flow 是自定义流量。full flow 是全流量。自定义流量就是请求会走你下面的匹配方式与条件。全流量则不走。</li>
<li>匹配方式：and 或者or 是指下面多个条件是按照and 还是or的方式来组合。</li>
<li>条件：
<ul>
<li>uri:是指你根据uri的方式来筛选流量，match的方式支持模糊匹配（/**）</li>
<li>header:是指根据请求头里面的字段来筛选流量。</li>
<li>query: 是指根据uri的查询条件来进行筛选流量。</li>
<li>ip:是指根据你请求的真实ip，来筛选流量。</li>
<li>host:是指根据你请求的真实host，来筛选流量。</li>
<li>post:建议不要使用。</li>
<li>条件匹配:
<ul>
<li>match : 模糊匹配，建议和uri条件搭配，支持 restful风格的匹配。（/test/**）</li>
<li>= : 前后值相等，才能匹配。</li>
<li>regEx : 正则匹配，表示前面一个值去匹配后面的正则表达式。</li>
<li>like ：字符串模糊匹配。</li>
</ul>
</li>
</ul>
</li>
<li>是否开启：打开才会生效</li>
<li>打印日志：打开的时候，当匹配上的时候，会打印匹配日志。</li>
<li>执行顺序：当多个选择器的时候，执行顺序小的优先执行。</li>
</ul>
</li>
<li>
<p>上述图片中表示:当请求的<code>uri</code>前缀是 <code>/test</code>，并且<code>header</code> 头上 <code>module</code> 字段值为<code>test</code> 的时候，会转发到 <code>1.1.1.1:8080</code> 这个服务。</p>
</li>
<li>
<p>选择器建议 : 可以<code>uri</code> 条件， <code>match</code> 前缀 （/contextPath），进行第一道流量筛选。</p>
</li>
</ul>
<h2>规则</h2>
<p><img src="https://yu199195.github.io/images/soul/rule.png" alt=""></p>
<ul>
<li>
<p>当流量经过选择器匹配成功之后，会进入规则来进行最终的流量匹配。</p>
</li>
<li>
<p>规则是对流量最终执行逻辑的确认。</p>
</li>
<li>
<p>规则详解：</p>
<ul>
<li>名称：为你的规则起一个容易分辨的名字</li>
<li>匹配方式：and 或者or 是指下面多个条件是按照and 还是or。</li>
<li>条件：
<ul>
<li>uri:是指你根据uri的方式来筛选流量，match的方式支持模糊匹配（/**）</li>
<li>header:是指根据请求头里面的字段来筛选流量。</li>
<li>query: 是指根据uri的查询条件来进行筛选流量。</li>
<li>ip:是指根据你请求的真实ip，来筛选流量。</li>
<li>host:是指根据你请求的真实host，来筛选流量。</li>
<li>post:建议不要使用。</li>
<li>条件匹配:
<ul>
<li>match : 模糊匹配，建议和uri条件搭配，支持 restful风格的匹配。（/test/**）</li>
<li>= : 前后值相等，才能匹配。</li>
<li>regEx : 正则匹配，表示前面一个值去匹配后面的正则表达式。</li>
<li>like ：字符串模糊匹配。</li>
</ul>
</li>
</ul>
</li>
<li>是否开启：打开才会生效。</li>
<li>打印日志：打开的时候，当匹配上的时候，会打印匹配日志。</li>
<li>执行顺序：当多个选择器的时候，执行顺序小的优先执行。</li>
<li>处理：每个插件的规则处理不一样，具体的差有具体的处理，具体请查看每个对应插件的处理。</li>
</ul>
</li>
<li>
<p>上图表示:当 <code>uri</code> 等于  <code>/http/order/save</code> 的时候该规则被匹配,就会执行该规则中，负载策略是 <code>random</code></p>
</li>
<li>
<p>联合选择器,我们来表述一下 ：当一个 请求的 <code>uri</code> 为 <code>/http/order/save</code>, 会通过 <code>random</code> 的方式，转发到 <code>1.1.1.1:8080</code>。</p>
</li>
<li>
<p>规则建议: 可以<code>uri</code> 条件， <code>match</code> 最真实的<code>uri路径</code>，进行流量的最终筛选 。</p>
</li>
</ul>
<h2>条件详解</h2>
<ul>
<li>
<p>uri 匹配 （推荐）</p>
<ul>
<li>
<p>uri匹配是根据你请求路径中的uri来进行匹配，在接入网关的时候，前端几乎不用做任何更改。</p>
</li>
<li>
<p>当使用 <code>match</code> 方式匹配时候，同 <code>springmvc</code> 模糊匹配原理相同。</p>
</li>
<li>
<p>在选择器中，推荐使用uri中的前缀来进行匹配，而在规则中，则使用具体路径来进行匹配。</p>
</li>
<li>
<p>该匹配方式的时候，在匹配字段名称可以任意填写，匹配字段值需要正确填写。</p>
</li>
</ul>
</li>
<li>
<p>header 匹配</p>
<ul>
<li>header是根据你的<code>http</code> 请求头中的字段值来匹配。</li>
</ul>
</li>
<li>
<p>query 匹配</p>
<ul>
<li>
<p>这个是根据你的uri中的查询参数来进行匹配，比如 /test?a=1&amp;&amp;b=2 ，那么可以选择该匹配方式。</p>
</li>
<li>
<p>上述就可以新增一个条件，选取 query方式  , a   =  1  。</p>
</li>
</ul>
</li>
<li>
<p>ip匹配</p>
<ul>
<li>
<p>这个是根据 http调用方的 ip来进行匹配。</p>
</li>
<li>
<p>尤其是在waf插件里面，如果发现一个ip地址有攻击，可以新增一条匹配条件，填上该ip，拒绝该ip的访问。</p>
</li>
<li>
<p>如果在soul前面使用了nginx代理，为了获取正确的ip，你可能要参考 <a href="dev-iphost.md">dev-iphost</a></p>
</li>
</ul>
</li>
<li>
<p>host匹配</p>
<ul>
<li>
<p>这个是根据 http调用方的host来进行匹配。</p>
</li>
<li>
<p>尤其是在waf插件里面，如果发现一个host地址有攻击，可以新增一条匹配条件，填上该host，拒绝该host的访问。</p>
</li>
<li>
<p>如果在soul前面使用了nginx代理，为了获取正确的host，你可能要参考 <a href="dev-iphost.md">dev-iphost</a></p>
</li>
</ul>
</li>
<li>
<p>post匹配</p>
<ul>
<li>不推荐使用。</li>
</ul>
</li>
</ul>
</div></section><footer class="footer-container"><div class="footer-body"><img src="/website/img/dromara.png"/><div class="cols-container"><div class="col col-12"><h3>免责声明</h3><p>任何单位或个人转载本网站的所有相关信息，请注明来源。</p></div><div class="col col-6"><dl><dt>文档</dt><dd><a href="/website/zh-cn/docs/soul/soul.html" target="_self">概览</a></dd><dd><a href="/website/zh-cn/docs/soul/soul.html" target="_self">快速开始</a></dd><dd><a href="/website/zh-cn/docs/soul/soul.html" target="_self">开发者指南</a></dd></dl></div><div class="col col-6"><dl><dt>资源</dt><dd><a href="/website/zh-cn/blog/index.html" target="_self">博客</a></dd><dd><a href="/website/zh-cn/community/index.html" target="_self">社区</a></dd></dl></div></div><div class="copyright"><span>Copyright ©2020 xiaoyu@apache.org by xiaoyu</span></div></div></footer></div></div>
	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
	<script src="https://f.alicdn.com/react/15.4.1/react-dom.min.js"></script>
	<script>
		window.rootPath = '/website';
  </script>
	<script src="/website/build/documentation.js"></script>
</body>
</html>